package chpn.sql.rowset;

import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Types;
import java.util.Arrays;

public class ResultSetMeta implements ResultSetMetaData {
	Field[] fields = new Field[ 10 ];
	int columnCount = 0;
	public ResultSetMeta(ResultSetMetaData oldmeta) {
		
	}
	public void addField(Field field){
		if( fields.length< columnCount+1){
			fields = Arrays.copyOf(fields, fields.length + 10 );
		}
		fields[ columnCount++ ] = field;
	}
	@Override
	public <T> T unwrap(Class<T> iface) throws SQLException {
		
		return null;
	}

	@Override
	public boolean isWrapperFor(Class<?> iface) throws SQLException {
		
		return false;
	}

	@Override
	public int getColumnCount() throws SQLException {
		
		return columnCount;
	}

	@Override
	public boolean isAutoIncrement(int column) throws SQLException {
		
		return false;
	}

	@Override
	public boolean isCaseSensitive(int column) throws SQLException {
		
		return false;
	}

	@Override
	public boolean isSearchable(int column) throws SQLException {
		
		return false;
	}

	@Override
	public boolean isCurrency(int column) throws SQLException {
		
		return false;
	}

	@Override
	public int isNullable(int column) throws SQLException {
		
		return 0;
	}

	@Override
	public boolean isSigned(int column) throws SQLException {
		
		return false;
	}

	@Override
	public int getColumnDisplaySize(int column) throws SQLException {
		
		return 0;
	}
	/**
	 * 别名 或者字段名 
	 */
	@Override
	public String getColumnLabel(int column) throws SQLException {
		return fields[ column-1 ].columnLabel;
	}

	@Override
	public String getColumnName(int column) throws SQLException {
		
		return fields[ column-1 ].columnName;
	}

	@Override
	public String getSchemaName(int column) throws SQLException {
		
		return fields[ column-1 ].schemaName;
	}

	@Override
	public int getPrecision(int column) throws SQLException {

		return fields[ column-1 ].precision;
	}

	@Override
	public int getScale(int column) throws SQLException {
		return fields[ column-1 ].scale;
	}

	@Override
	public String getTableName(int column) throws SQLException {
		return fields[ column-1 ].table;
	}

	@Override
	public String getCatalogName(int column) throws SQLException {
		return fields[ column-1 ].catalogName;
	}

	@Override
	public int getColumnType(int column) throws SQLException {
	
		if( column<0 || column >=fields.length ){
			return Types.NULL;
		}
		return fields[ column-1 ].columnType;
	}

	@Override
	public String getColumnTypeName(int column) throws SQLException {		
		return null;
	}

	@Override
	public boolean isReadOnly(int column) throws SQLException {		
		return false;
	}

	@Override
	public boolean isWritable(int column) throws SQLException {		
		return false;
	}

	@Override
	public boolean isDefinitelyWritable(int column) throws SQLException {
		return false;
	}

	@Override
	public String getColumnClassName(int column) throws SQLException {
		return fields[ column-1 ].columnClassName;
	}

}
